--PROCEDIMENTO DE CARGA DE VEICULOS NO DW
CREATE PROCEDURE CarregaDimVeiculo(@DataCarga DATE)
AS
	
	DECLARE @CodVeiculo INT, @marca VARCHAR(20), @modelo CHAR (30), @anoFabricacao INT, @tipo CHAR (20);
	DECLARE @BUSCAITENS INT
	
	SET @BUSCAITENS = (SELECT COUNT(*) FROM ST_SiGAT.dbo.Veiculo WHERE dataCarga = @DataCarga)
	IF (@BUSCAITENS <>0)
	BEGIN
		DECLARE C_VEICULO CURSOR FOR
		SELECT [CodVeiculo],[marca],[modelo],[anoFabricacao],[tipo]
		FROM [ST_SiGAT].[dbo].[Veiculo]
		WHERE dataCarga = @DataCarga
		
		OPEN C_VEICULO
			FETCH C_VEICULO INTO @CodVeiculo, @marca, @modelo, @anoFabricacao, @tipo
			WHILE (@@FETCH_STATUS = 0)
			BEGIN
				IF (EXISTS(SELECT * FROM DW_SiGAT.dbo.DimVeiculo WHERE CodVeiculo = @CodVeiculo))
				BEGIN
					UPDATE [DW_SiGAT].[dbo].[DimVeiculo]
					   SET [marca] = @marca
						  ,[modelo] = @modelo
						  ,[anoFabricacao] = @anoFabricacao
						  ,[tipo] = @tipo
					 WHERE CodVeiculo = @CodVeiculo
				END
				ELSE
				BEGIN
					INSERT INTO [DW_SiGAT].[dbo].[DimVeiculo]
							   ([CodVeiculo],[marca],[modelo],[anoFabricacao],[tipo])
						 VALUES
							   (@codVeiculo, @marca, @modelo, @anoFabricacao, @tipo);			
				END
				FETCH C_VEICULO INTO @CodVeiculo, @marca, @modelo, @anoFabricacao, @tipo
			END
		
		CLOSE C_VEICULO
		DEALLOCATE C_VEICULO;
	END;
go
--FIM CARGA VEICULO


--teste carga veiculo
EXEC CarregaDimVeiculo '20120715';
SELECT * FROM DimVeiculo;


